#!/bin/bash
# 清理 C++ 版本文件，只保留 Rust 版本
# 
# 此脚本会：
# 1. 删除 C++ 源码目录（src/）
# 2. 删除 C++ 编译产物（build/）
# 3. 删除 C++ 可执行文件（moparse）
# 4. 删除 C++ Makefile
# 5. 保留所有文档
# 6. 保留 Rust 版本（moparse-rs/）
# 7. 保留静态编译版本（moparse-static）

set -e

echo "========================================="
echo "清理 C++ 版本文件"
echo "========================================="
echo ""

# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

print_info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

print_warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

print_step() {
    echo -e "${BLUE}[STEP]${NC} $1"
}

# 获取脚本所在目录
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"

echo "当前目录: $SCRIPT_DIR"
echo ""

# 确认操作
echo "即将删除以下 C++ 相关文件和目录："
echo ""
echo "  - src/             (C++ 源码)"
echo "  - build/           (C++ 编译产物)"
echo "  - moparse          (C++ 可执行文件)"
echo "  - Makefile         (C++ 构建配置)"
echo ""
echo "将保留："
echo ""
echo "  ✅ moparse-rs/      (Rust 源码)"
echo "  ✅ moparse-static   (Rust 静态编译版本)"
echo "  ✅ 所有文档文件"
echo "  ✅ 测试文件 (tests/)"
echo ""

read -p "确认删除？(yes/no): " confirm

if [ "$confirm" != "yes" ]; then
    print_warn "操作已取消"
    exit 0
fi

echo ""
print_step "开始清理..."
echo ""

# 1. 删除 src 目录
if [ -d "src" ]; then
    print_info "删除 C++ 源码目录: src/"
    rm -rf src/
    print_info "✓ src/ 已删除"
else
    print_warn "src/ 目录不存在，跳过"
fi

# 2. 删除 build 目录
if [ -d "build" ]; then
    print_info "删除 C++ 编译产物目录: build/"
    rm -rf build/
    print_info "✓ build/ 已删除"
else
    print_warn "build/ 目录不存在，跳过"
fi

# 3. 删除 C++ 可执行文件
if [ -f "moparse" ]; then
    print_info "删除 C++ 可执行文件: moparse"
    rm -f moparse
    print_info "✓ moparse 已删除"
else
    print_warn "moparse 文件不存在，跳过"
fi

# 4. 删除 Makefile
if [ -f "Makefile" ]; then
    print_info "删除 C++ Makefile: Makefile"
    rm -f Makefile
    print_info "✓ Makefile 已删除"
else
    print_warn "Makefile 文件不存在，跳过"
fi

echo ""
print_step "清理完成！"
echo ""

# 验证保留的文件
print_info "验证保留的文件和目录..."
echo ""

if [ -d "moparse-rs" ]; then
    print_info "✓ moparse-rs/ 已保留"
else
    print_error "✗ moparse-rs/ 不存在！"
fi

if [ -f "moparse-static" ]; then
    print_info "✓ moparse-static 已保留"
    ls -lh moparse-static
else
    print_warn "⚠ moparse-static 不存在"
fi

if [ -d "tests" ]; then
    print_info "✓ tests/ 已保留"
else
    print_warn "⚠ tests/ 不存在"
fi

# 列出文档文件
echo ""
print_info "保留的文档文件:"
ls -1 *.md 2>/dev/null || echo "  (无 .md 文件)"

echo ""
print_step "清理总结"
echo ""

echo "已删除:"
echo "  ✓ C++ 源码 (src/)"
echo "  ✓ C++ 编译产物 (build/)"
echo "  ✓ C++ 可执行文件 (moparse)"
echo "  ✓ C++ Makefile"
echo ""

echo "已保留:"
echo "  ✓ Rust 源码 (moparse-rs/)"
echo "  ✓ Rust 静态版本 (moparse-static)"
echo "  ✓ 所有文档文件 (*.md)"
echo "  ✓ 测试文件 (tests/)"
echo "  ✓ 构建脚本 (*.sh)"
echo ""

print_info "现在可以使用 Rust 版本："
echo ""
echo "  # 直接运行静态版本"
echo "  ./moparse-static --help"
echo ""
echo "  # 或从源码编译"
echo "  cd moparse-rs"
echo "  cargo build --release --target=x86_64-unknown-linux-musl"
echo ""

print_info "详细文档请查看:"
echo "  - README.md (新版，只包含 Rust)"
echo "  - CPP_ARCHIVE.md (C++ 版本归档)"
echo ""

echo "========================================="
echo "完成！"
echo "========================================="

